% 最小二乘法求一次多项式
clear;
x = [2, 4, 4, 4.6, 5, 5.2, 5.6, 6, 6.6, 7];
y = [5, 3.5, 3, 2.7, 2.4, 2.5, 2, 1.5, 1.2, 1.2];
% plot(x, y, 'o');    % 样本散点图

A = [length(x), sum(x); sum(x), sum(x .* x)];   % 法方程系数矩阵
b = [sum(y); sum(x .* y)];    % 法方程常数项
% pa = inv(A)*b;   % 左乘逆矩阵，求解法方程
pa = A\b;

pa = pa(end : -1 : 1); % 多项式系数
px = 0 : 0.01 : 10;   % 画直线函数的横坐标
py = polyval(pa, px);   % 多项式求值
plot(x, y, 'o', px, py);   % 一次多项式拟合结果
